﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Process.Entities;
using System.Data.SqlClient;
using System.Data;
using KZ.Exception;
using KZ.Utilities;
namespace Process.DAL
{
    public class ProductDAL
    {
        private static ProductENT CreateProductFromReader(IDataReader reader)
        {
            ProductENT item = new ProductENT();

            if (!reader.IsDBNull(reader.GetOrdinal(ProductColumns.ProductID.ToString()))) item.ProductID = Utility.StringParse(reader[ProductColumns.ProductID.ToString()]);
            if (!reader.IsDBNull(reader.GetOrdinal(ProductColumns.ProductName.ToString()))) item.ProductName = Utility.StringParse(reader[ProductColumns.ProductName.ToString()]);
            if (!reader.IsDBNull(reader.GetOrdinal(ProductColumns.UnitPrice.ToString()))) item.UnitPrice = Utility.DecimalParse(reader[ProductColumns.UnitPrice.ToString()]);
            if (!reader.IsDBNull(reader.GetOrdinal(ProductColumns.CategoryID.ToString()))) item.CategoryID = Utility.StringParse(reader[ProductColumns.CategoryID.ToString()]);
            if (!reader.IsDBNull(reader.GetOrdinal(ProductColumns.QuantityAtLeast.ToString()))) item.QuantityAtLeast = Utility.IntParse(reader[ProductColumns.QuantityAtLeast.ToString()]);
            if (!reader.IsDBNull(reader.GetOrdinal(ProductColumns.ProductPhotoUrl.ToString()))) item.ProductPhotoUrl = Utility.StringParse(reader[ProductColumns.ProductPhotoUrl.ToString()]);
            if (!reader.IsDBNull(reader.GetOrdinal(ProductColumns.ProductDescription.ToString()))) item.ProductDescription = Utility.StringParse(reader[ProductColumns.ProductDescription.ToString()]);
            if (!reader.IsDBNull(reader.GetOrdinal(ProductColumns.OtherInfo.ToString()))) item.OtherInfo = Utility.StringParse(reader[ProductColumns.OtherInfo.ToString()]);
            if (!reader.IsDBNull(reader.GetOrdinal(ProductColumns.UpdatedDate.ToString()))) item.UpdatedDate = Utility.DateTimeParse(reader[ProductColumns.UpdatedDate.ToString()]);
            if (!reader.IsDBNull(reader.GetOrdinal(ProductColumns.IsDeleted.ToString()))) item.IsDeleted = Utility.BoolParse(reader[ProductColumns.IsDeleted.ToString()]);

            return item;
        }

        //public static ProductENT GetProductByID(string productID)
        //{
        //    try
        //    {
        //        ProductENT product = new ProductENT();

        //        DataAccessHelper.AddParameter("ProductID", SqlDbType.VarChar, productID);

        //        using (IDataReader reader = DataAccessHelper.ExecuteQuery("procProductGetByID"))
        //        {
        //            while (reader.Read())
        //            {
        //                product = CreateProductFromReader(reader);
        //            }
        //        }

        //        return product;
        //    }
        //    catch (SqlException)
        //    {
        //        throw new DataAccessException("Có lỗi trong quá trình lấy thông tin sản phẩm.");
        //    }
        //    finally
        //    {
        //        DataAccessHelper.ClearCommand();
        //    }
        //}

        public static DataTable GetProductList(string categoryID)
        {
            try
            {
                DataAccessHelper.AddParameter("CategoryID", SqlDbType.VarChar, categoryID);
                return DataAccessHelper.ExecuteQueryDataTable("procProductGetList");
            }
            catch (SqlException)
            {
                throw new DataAccessException("Có lỗi trong quá trình lấy thông tin sản phẩm.");
            }
            finally
            {
                DataAccessHelper.ClearCommand();
            }
        }
    }
}
